I. Field of the Invention
The invention relates generally to memory systems in computers. More particularly, the invention relates to an automatically-configuring memory subsystem for use with a computer wherein pluggable memory cards or modules of any memory size may be plugged into any of the allocated sockets of the computer and the system will automatically self-configure with respect to the memory.
II. Prior Art
Modern computer systems typically have provisions for expanding internal memory. For example, it is common to have "expansion slots" within the chassis of the computer into which memory boards may be inserted. Such memory boards are typically printed circuit boards (PCBs) populated with an array of semiconductor memory chips. Alternatively, the expansion memory can take the form of memory modules insertable in memory expansion sockets within the computer system. In order for the central processing unit (CPU) of the computer to store and retrieve data in such an expandable memory, the CPU must know the total size of the memory available. Furthermore, the total memory space must be configured such that there are no addressing ambiguities.
In many computer systems with expandable memories, a set of switches internal to the computer must be set to indicate the memory size whenever memory modules are inserted or removed. It is not uncommon for a technician or user to forget to set the switches when changing the memory size or to place such switches in the wrong position. In either case, the CPU receives erroneous information as to memory size and, consequently, the computer may be unable to properly address the memory. A customer who improperly sets the switches may never obtain the benefits of the extra memory capacity.
In other systems, the CPU senses the presence of a memory module without the requirement for switch-setting. This is typically limited to determining whether or not a predetermined memory option has been installed. Such systems are not capable of accommodating memory modules of arbitrary size that may be inserted in any one or more of several sockets.
In still other systems, logic circuitry is mounted on each expansion memory board for providing the remaining memory boards with signals indicating the respective sizes of the memories. The logic circuitry on each board then calculates the total memory, the total memory consisting of the CPU base memory, any expansion memory between the CPU base memory and that expansion memory board, and the memory resident on that expansion memory board. This value is then passed on to an adjacent expansion memory board in daisy-chain fashion. Such a system is described in detail in Lynch, U.S. Pat. No. 4,951,248. In such a system, the logic circuitry on each board requires additional board space, and increases costs and manufacturing time.
A solution to this problem is discussed in IBM Technical Disclosure Bulletin, Vol. 31, No. 12 of May, 1989, wherein an arrangement for supporting four memory card slots is described. Each slot could have a 0.5 megabyte (0.5 MB) card or a 2 megabyte (2 MB) card installed. Two wires from each memory card indicate whether a card is installed in the card slot and whether the card is a 0.5 MB or a 2 MB card. One wire is grounded on the memory card to indicate that the card is installed while the other wire is grounded or left floating to indicate the card size. The two wires are inputs to registers resident in the personal computer. The registers can be read by a microprocessor having microcode so that the computer will know the memory allocation. The use of this arrangement, however, requires allocation of microprocessor processing time, as well as programming and debugging of the microcode.